package com.cloudkinto.session;


import com.cloudkinto.common.exception.BizException;
import com.cloudkinto.entity.UserDo;

import javax.servlet.http.HttpServletRequest;

public interface UserSessionManager {
    /**
     * 获取用户会话
     *
     * @param sessionId 会话ID
     * @return 用户会话
     */
    UserSession getSession(String sessionId);

    /**
     * 获取用户会话
     *
     * @param request
     * @return 用户会话
     */
    UserSession getSession(HttpServletRequest request) throws UserSessionException;

    /**
     * 保持这个会话为最新
     * 其实就是更新下过期时间
     *
     * @param request
     * @return
     * @throws UserSessionException
     */
    UserSession keepAlive(HttpServletRequest request) throws UserSessionException;

    /**
     * 通过自身平台用户名密码创建会话
     *
     * @param userAccount 自身平台用户名
     * @param userPassword 自身平台密码
     * @return
     * @throws UserSessionException
     */
    UserSession createSession(UserDo userDo) throws UserSessionException, BizException;


    /**
     * 清除会话
     *
     * @param sessionId
     */
    void clearSession(String sessionId);

}
